
#ifndef __HEAD__H__
#define __HEAD__H__


#include<stdio.h>                       
#include<stdlib.h>                      
#include<string.h>                      
#include<errno.h>                       
#include<sys/ioctl.h>                   
#include <fcntl.h>                      
#include <unistd.h>                     
#include<termios.h>                     
#include<sys/types.h>                   
#include<sys/stat.h>                    
#define N_CMD sizeof(struct cmd_t)//命令结构体大小          
#define N_ENV sizeof(struct env_t)//环境信息结构体大小  
#define N_GOOD sizeof(struct goods_t)//货物信息结构体大小
 typedef struct {
	int temp[2];	 //温度
	int hum[2];		 //湿度
	int x;			 //三轴信息
	int y;			 
	int z;			 
	int light;		 //光照
	int flag ;  //货物增减标志
	char goods_info[5];
}sendEnv;
/****************************************/      
//货物信息结构体                                
/***************************************/                                        
/****************************************/      
//命令编码和阈结构体                            
/***************************************/               
struct cmd_t{              
	char cmd_num; 
	char value;    
}cmd;  

	struct termios options;
void serial_init(int fd)
{
	tcgetattr(fd, &options);
	options.c_cflag |= ( CLOCAL | CREAD );//修改控制模式：CLOCAL保证程序不会占用串口
										//CREAD使得能够从串口中读取输入数据
	options.c_cflag &= ~CSIZE;
	options.c_cflag &= ~CRTSCTS;
	options.c_cflag |= CS8;
	options.c_cflag &= ~CSTOPB; 
	options.c_iflag |= IGNPAR;
	options.c_iflag &= ~(ICRNL | IXON);
	options.c_oflag = 0;
	options.c_lflag = 0;

	options.c_cc[VMIN] =sizeof(sendEnv);
	options.c_cc[VTIME] = 10;
	tcflush(fd, TCIFLUSH);//如果发生数据溢出，接收数据，但是不再读取

	cfsetispeed(&options, B115200);
	cfsetospeed(&options, B115200);
	tcsetattr(fd,TCSANOW,&options);//激活配置
}

                    
                           
#endif
